VScode搭建C++开发环境
一门语言的开发, 最重要和基础的是 编译器和环境。
与java语言相比,c++有一些相关的编译器,比如clang等。 而环境有所不同,java依赖JRE,c++依赖一些库和动态链接库。
关键词: 编译器、环境、依赖管理、vscode(Build Task)、vscode(Debug)
c++的环境不同于java, 需要安装jdk,即:开发工具包,包括编译器(javac)、运行时环境(JRE).
本文主要完整的总结了c++开发环境的构建.
1. C++编译器
1.1 c++环境
不同于java, 需要安装jdk,即:开发工具包,包括编译器(javac)、运行时环境(JRE).
而c++ 不需要java那样 完整的运行时环境(JRE)。 但 C++ 程序在运行时会依赖一些库和动态链接库(DLL 或 .so 文件),
主要涉及到标准库和依赖管理。
另外就是c++的编译器:clang是更加现代化、模块化,编译速度更快,适合大型项目的编译器。
1.2 clang(编译器)安装
编译器选择clang。 通常情况下,Mac上已经安装好了clang。
如果没有(clang —version 没有结果) 或则版本不符合使用要求, 则可以重新安装。
安装方式包括:1. 基于Commond Line Tools, 重新安装CLT。 2. 基于llvm,brew install llvm
1.3 c++标准库
1.4 依赖管理
2. 插件安装
这一块比较简单, 在vscode中 找到需要的 c++相关插件,安装即可,在这里不展开了。
3. 开发环境配置
3.1 环境
如何在 vscode中查看 c++使用了 什么环境? 即clang 编译器及c++库。
- 打开 vsCode 的Settings,搜索”C++“,包含了一些配置项。
- 或者在VSCdoe中打开终端,输入命令 clang —version。
3.2 Build Task
VSCode中的 Terminal -> Run Build Task
实现原理: 通过.vscode下的tasks.json 文件描述, 实现将 相关的命令打包成任务。
优点:不用每次输入一大串 命令。
3.3 Debug
c++ Debug的原理:主要依赖于编译器生成的调试信息和调试器的功能。
以下是调试的关键点:
- 编译器生成调试信息(在编译 C++ 程序时,可以使用编译选项(如 -g)来生成调试信息。 包括:变量名、行号和函数调用等)
- 调试器(如 GDB、LLDB 或 VSCode 内置调试工具):使用这些调试信息来提供逐步执行、设置断点和查看变量值的功能。
- 调试器能够在运行时暂停程序,检查程序状态,并帮助找出错误或异常行为。
- 源代码映射:调试器将机器代码映射回源代码。 允许开发者在源代码中看到程序执行的具体位置。
draft
优点
- 多平台几乎相同的使用体验,除了部分快捷键不一样。
- 非常轻量,启动速度很快。
- 强大的扩展功能,C++与CMake Tools都是扩展。
- 内置终端,来回切换很方便。
缺点
- IntelliSense不如VS的好用,经常找不到符号,需要重新解析文件。相比于VS2019原生支持CMake,体验差很多。
- Mac下不支持”Jump to Cursor”,而Xcode支持这个功能。对于调试还是有些不方便。
配合CMake ToolsCMake
主要使用settings.json配置文件,以往需要手动输入的命令、传递的参数都可以写在这个文件里。在配置文件中传递参数在cmake.configureSettings中设置参数,相当于传入了-D+参数给CMake。也可以使用cmake.configureArgs,但是官方不推荐。
在配置文件中设置环境变量
有3个字段可以设置:cmake.configureEnvironment: 仅用于CMake配置阶段cmake.buildEnvironment: 仅用于编译阶段cmake.environment: 同时用于CMake配置与编译阶段为Debug/Release设置不同环境变量可以通过CMake Variants实现,在buildType这个variant中分别在Debug/Release的env字段中设置。构建不同配置的目标文件还是用CMake Variants,创建一个新的variant设置不同的配置。这个variant会与其它variant排列组合生成很多kit。
参考
使用VSCode+CMake开发C++
Mac使用VS Code配置C++编译和调试环境
M1芯片Mac配置vscode调试C++环境
M1 McacBook 配置 VS Code debug C++配置(CodeLLDB)